package com.haixiaoke.saas.user.service;

import com.haixiaoke.saas.user.domain.BizTenantUser;

import java.util.List;

/**
 * B端用户与企业机构关系Service接口
 * 
 * @author panda
 * @date 2024-02-26
 */
public interface IBizTenantUserService {
    /**
     * 查询B端用户与企业机构关系
     * 
     * @param depId B端用户与企业机构关系主键
     * @return B端用户与企业机构关系
     */
    BizTenantUser selectBizDepartmentUserByDepId(String tenantId);

    /**
     * 查询B端用户与企业机构关系列表
     * 
     * @param bizTenantUser B端用户与企业机构关系
     * @return B端用户与企业机构关系集合
     */
    List<BizTenantUser> selectBizDepartmentUserList(BizTenantUser bizTenantUser);

    /**
     * 新增B端用户与企业机构关系
     * 
     * @param bizTenantUser B端用户与企业机构关系
     * @return 结果
     */
    int insertBizDepartmentUser(BizTenantUser bizTenantUser);

    /**
     * 修改B端用户与企业机构关系
     * 
     * @param bizTenantUser B端用户与企业机构关系
     * @return 结果
     */
    int updateBizDepartmentUser(BizTenantUser bizTenantUser);

    /**
     * 批量删除B端用户与企业机构关系
     * 
     * @param tenantIds 需要删除的B端用户与企业机构关系主键集合
     * @return 结果
     */
     int deleteBizDepartmentUserByDepIds(String[] tenantIds);

    /**
     * 删除B端用户与企业机构关系信息
     * 
     * @param tenantId B端用户与企业机构关系主键
     * @return 结果
     */
     int deleteBizDepartmentUserByDepId(String tenantId);

    /**
     * 根据用户id查询关联数据
     * @param userId    用户id
     * @return
     */
    List<BizTenantUser> selectBizDepartmentUserByUserId(Long userId);

    /**
     * 批量插入机构与用户关联数据
     * @param depUserList
     * @return
     */
    int insertBatchDepUser(List<BizTenantUser> depUserList);

    /**
     * 根据用户id与机构id统计数量
     * @param userId
     * @param depId
     * @return
     */
    int selectBizDepartmentUserByUserIdAndDepId(Long userId, String tenantId);

    int deleteBizDepUserByUserIdAndDepId(Long userId, String tenantId);

    /**
     * 统计一个机构下的用户数量
     * @param depId
     * @return
     */
    int countUserNumByDepId(String tenantId);

    /**
     * 检测该用户是否存在该机构
     *
     * @param depId
     * @param phonenumber
     * @return
     */
    boolean checkUserByDepId(String tenantId, String phonenumber);
}
